Docker for Mac で、moby linux にアクセスする
はじめに
先日、同僚から以下の質問がありました。
- Q. Docker for Mac で、Container Hypervisor(moby linux)に SSH login したい
理由を聞いてみると、docker volume create コマンドで作成される moby linux 上のファイルシステム(moby:/var/lib/docker/volumes)へアクセスしたいということでした。
上の質問に対するやりとりの結論が、本記事の元ネタとなります。
前提条件
本記事では、以下のツールを対象とした環境での情報が記載されております。
また、参考情報となりますが筆者の PC 環境は、以下のとおりです。
- MacBook Pro (Retina, 13-inch, Early 2015)
- macOS Sierra 10.12.5
まずは調べてみる
少し調べた結果、フォーラムにナレッジが投稿されておりました。 moby linux へのアクセス手順として SSH は利用できずターミナルから、screen コマンドで moby linux へ接続可能なようです。
回答は、以下のとおり
- A. ターミナルから、screen コマンドでアクセスできます。
$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
screen のセッションを切断するには、Ctrl-a k です。
moby linux をさわってみた
実際に、少し触ってみました。
/ # hostname moby / # uname -a Linux moby 4.9.27-moby #1 SMP Thu May 11 04:01:18 UTC 2017 x86_64 Linux / # cat /etc/os-release NAME="Alpine Linux" ID=alpine VERSION_ID=3.5.0 PRETTY_NAME="Alpine Linux v3.5" HOME_URL="http://alpinelinux.org" BUG_REPORT_URL="http://bugs.alpinelinux.org" / # docker -v Docker version 17.03.1-ce, build c6d412e / # docker info Total Memory: 1.952 GiB Name: moby ID: VTYP:K52S:UN73:52AS:LRNA:MRK7:5TOT:DR76:AJIE:RNK2:GUWM:B7H4 Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): true File Descriptors: 17 Goroutines: 28 System Time: 2017-06-08T02:30:39.977004354Z EventsListeners: 1 No Proxy: *.local, 169.254/16 Registry: https://index.docker.io/v1/ Experimental: true Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false / # docker info | more Containers: 12 Running: 0 Paused: 0 Stopped: 12 Images: 8 Server Version: 17.03.1-ce Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: 4ab9917febca54791c5f071a9d1f404867857fcc runc version: 54296cf40ad8143b62dbcaa1d90e520a2136ddfe init version: 949e6fa Security Options: seccomp Profile: default Kernel Version: 4.9.27-moby Operating System: Alpine Linux v3.5 OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 1.952 GiB Name: moby ID: VTYP:K52S:UN73:52AS:LRNA:MRK7:5TOT:DR76:AJIE:RNK2:GUWM:B7H4 Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): true File Descriptors: 17 Goroutines: 28 System Time: 2017-06-08T02:30:49.919762221Z EventsListeners: 1 No Proxy: *.local, 169.254/16 Registry: https://index.docker.io/v1/ Experimental: true Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false
普通に macOS の Hypervisor Framework 上で動作する Alpine ベースの moby linux にアクセス出来ることが確認出来ました。
moby linux については、Alpine Linux 派生ということしか知らず 実際に触ったことが無かったので、すこし新鮮な気分を味わえました。
参考ドキュメント
- Host path of volume - Docker for Mac - Docker Forums
- moby/moby: Moby Project - a collaborative project for the container ecosystem to assemble container-based systems
- Hypervisor | Apple Developer Documentation
さいごに
Docker for Mac での仮想環境として、moby/hyperkitが利用されていることは皆さんご存知かもしれません。 hyperkit は、確か mist64/xhyve ベースだった記憶があるのですが最近の事情には疎く進化も早いため追いきれてません。 これを機会に少し、moby linux と戯れてみたり Docker for Mac の実装について学習してみるのも良いかもしれません。
ではでは